import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        // 使用流式操作对字符串数组进行分组
        return new ArrayList<>(Arrays.stream(strs)
                .collect(Collectors.groupingBy(str -> {
                    // 将字符串转换为字符数组并排序
                    char[] array = str.toCharArray();
                    Arrays.sort(array);
                    // 返回排序后的字符串作为分组的键
                    return new String(array);
                })).values());
    }

    public static void main(String[] args) {
        // 创建一个 Solution 实例
        Solution solution = new Solution();

        // 测试输入
        String[] strs = {"eat", "tea", "tan", "ate", "nat", "bat"};

        // 调用方法并获取结果
        List<List<String>> result = solution.groupAnagrams(strs);

        // 输出结果
        System.out.println("分组后的字母异位词：");
        for (List<String> group : result) {
            System.out.println(group);
        }
    }
}
